package factuurPackage;

import java.util.ArrayList;
import java.util.Date;

import klantPackage.Klant;

public class Factuur {
	private Date factuurDatum = new Date();
	private int factuurID = 0;
	private double totaalBedrag = 0;
	private Klant vanKlant = new Klant();
	private Betaling heeftBetaling ;
	private ArrayList<FactuurRegel> heeftRegels;

	public Factuur() {
		heeftBetaling = new Betaling(0);
		heeftRegels = new ArrayList<FactuurRegel>();
	}

	public Factuur(Date factuurDatum, int factuurID) {
		heeftBetaling = new Betaling(factuurID);
		heeftRegels = new ArrayList<FactuurRegel>();
		this.factuurDatum = factuurDatum;
		this.factuurID = factuurID;
	}

	public Date getFactuurDatum() {
		return factuurDatum;
	}

	public void setFactuurDatum(Date factuurDatum) {
		this.factuurDatum = factuurDatum;
	}

	public int getFactuurID() {
		return factuurID;
	}

	public void setFactuurID(int factuurID) {
		this.factuurID = factuurID;
		heeftBetaling.setBetalingID(factuurID);
	}

	public double getTotaalBedrag() {
		return totaalBedrag;
	}

	public void setTotaalBedrag(double totaalBedrag) {
		this.totaalBedrag = totaalBedrag;
	}

	public void setKlant(Klant vanKlant) {
		this.vanKlant = vanKlant;
	}

	public Klant getKlant() {
		return vanKlant;
	}

	public void setBetaling(Betaling heeftBetaling) {
		this.heeftBetaling = heeftBetaling;
	}

	public Betaling getBetaling() {
		return heeftBetaling;
	}

	public ArrayList<FactuurRegel> addFacatuurRegel(FactuurRegel factuurRegel) {
		int bestaatReeds = -1;
		for (int i = 0; i < heeftRegels.size(); i++) {
			if (heeftRegels.get(i).equals(factuurRegel)) {
				bestaatReeds = i;
			}
		}
		if (bestaatReeds != -1) {
			heeftRegels.get(bestaatReeds).setAantal(
					heeftRegels.get(bestaatReeds).getAantal()
							+ factuurRegel.getAantal());
		} else {
			heeftRegels.add(factuurRegel);
		}
		return heeftRegels;
	}

	public ArrayList<FactuurRegel> getAlleFacatuurRegels() {
		return heeftRegels;
	}
	public ArrayList<FactuurRegel> setAlleFactuurRegels(ArrayList<FactuurRegel> factuurRegels){
		this.heeftRegels = factuurRegels;
		return heeftRegels;
	}
 
	public double berekenTotaal() {
		double totaalPrijs = 0.0;
		for (FactuurRegel fR : heeftRegels) {
			totaalPrijs += fR.getTotaalBedrag();
		}
		totaalPrijs = totaalPrijs * (1.0 - vanKlant.getKorting() / 100.0);
		return totaalPrijs;
	}
	public double berekenTotaalBedrag() {
		
		return berekenTotaal();
	}

	public String toString() {
		String s = "";
		s += "Factuur id: " + factuurID + " Datum: " + factuurDatum
				+ " Klant: " + vanKlant + "\n";
		for (FactuurRegel fR : heeftRegels) {
			s += fR + "\n";
		}
		return s;

	}
}
